iOS SDK
Bauen Sie AR Clip VPS in eine native iOS-App ein. Das SDK nutzt das Tracking von ARKit, um die Position des Nutzers auf Ihren VPS-Karten zu bestimmen. Es ist ein XCFramework und funktioniert in Apps mit UIKit, RealityKit und SwiftUI.
Bevor Sie beginnen
- iOS 15.0 oder neuer
- Xcode 14 oder neuer (Swift 5.7 oder neuer)
- Ein Gerät, auf dem ARKit läuft. Der Simulator wird nicht unterstützt.
Installieren
Wählen Sie einen von zwei Wegen.
Swift Package Manager
- Wählen Sie in Xcode File → Add Packages….
- Geben Sie
https://github.com/WebAR-Studio/was-vps-ios.gitein. - Wählen Sie den gewünschten Branch oder Tag und fügen Sie das Paket Ihrem Target hinzu.
Manuell
- Klonen Sie das Repository:
git clone https://github.com/WebAR-Studio/was-vps-ios.git - Ziehen Sie
WASVPS.xcframeworkin Ihr Projekt. - Prüfen Sie unter General → Frameworks, Libraries, and Embedded Content, dass das Framework eingebettet ist.
Berechtigungen hinzufügen
Tragen Sie in Info.plist Beschreibungen für die Nutzung von Kamera und Standort ein, damit iOS den
Nutzer um Zugriff bitten kann.
<key>NSCameraUsageDescription</key>
<string>This app requires access to the camera to display augmented reality content.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to your location to place AR content accurately.</string>
<key>NSLocationTemporaryUsageDescriptionDictionary</key>
<dict>
<key>VPSLocalization</key>
<string>Enable precise location for accurate AR content positioning.</string>
</dict>
VPS starten
Rufen Sie VPSBuilder.initializeVPS auf, um einen VPSService zu erstellen. Übergeben Sie die
ARSession, Ihren API-Schlüssel und Ihre Standort-IDs.
Sie erhalten ihn auf arclip.design oder per E-Mail an support@arclip.design.
import ARKit
import WASVPS
final class VPSDemoController: UIViewController, ARSCNViewDelegate {
@IBOutlet private weak var sceneView: ARSCNView!
private var configuration: ARWorldTrackingConfiguration?
private var vps: VPSService?
override func viewDidLoad() {
super.viewDidLoad()
sceneView.delegate = self
sceneView.scene = SCNScene()
configuration = VPSBuilder.getDefaultConfiguration()
VPSBuilder.initializeVPS(
arSession: sceneView.session,
apiKey: "your-api-key",
locationIds: ["your-location-id"],
url: "https://api.arclip.app/vps/api/v3",
gpsUsage: false,
delegate: self
) { service in
self.vps = service
self.vps?.start()
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if let configuration { sceneView.session.run(configuration) }
}
func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
vps?.frameUpdated()
}
}
extension VPSDemoController: VPSServiceDelegate {
func positionVPS(pos: ResponseVPSPhoto) {
print("Localized pose:", pos)
}
func error(err: NSError) {
print("VPS error:", err)
}
func sending(requestData: UploadVPSPhoto?) {
print("Sending localization request…")
}
}
Pausieren Sie den Dienst in sessionWasInterrupted und starten Sie ihn in
sessionInterruptionEnded wieder.
RealityKit
Mit RealityKit leiten Sie die Frames in ARSessionDelegate weiter:
func session(_ session: ARSession, didUpdate frame: ARFrame) {
vps?.frameUpdated()
}
Die Aufrufe für den Lebenszyklus (start, stop, clearCustomLocPos) sind dieselben wie mit
SceneKit.
SwiftUI
Verpacken Sie ARSCNView oder ARView in UIViewRepresentable oder
UIViewControllerRepresentable. Halten Sie VPSService in einem gemeinsamen View-Model und rufen
Sie start() / stop() aus SwiftUI-Steuerelementen auf.
Weitere Optionen
- Geben Sie mit
setCustomLocPosForFirstRequestvor der ersten Lokalisierung eine bekannte Transformation vor. - Nutzen Sie einen anderen Endpunkt, indem Sie
initializeVPSeine andereurlübergeben. - Schalten Sie
gpsUsageein, um die Koordinaten des Geräts in die Anfragen aufzunehmen.
Fehlerbehebung
- Gibt
VPSBuilder.getDefaultConfiguration()den Wertnilzurück, wird das Gerät nicht unterstützt. - Werden die Callbacks nie aufgerufen, prüfen Sie, ob
frameUpdated()in jedem Frame läuft und ob Ihr API-Schlüssel und Ihre Standort-IDs gültig sind. - Beispiele für UIKit, RealityKit und SwiftUI finden Sie im Ordner
/examples.